import 'package:flutter/material.dart';

class Test_FittedBox extends StatelessWidget {
  const Test_FittedBox({super.key});

  Widget wContainer(BoxFit boxFit) {
    return Container(
      width: 50,
      height: 50,
      color: Colors.red,
      child: FittedBox(
        fit: boxFit,
        // 子容器超过父容器大小
        child: Container(width: 60, height: 70, color: Colors.blue),
      ),
    );
  }

  // 直接使用Row
  Widget wRow(String text) {
    Widget child = Text(text);
    child = Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [child, child, child],
    );
    return child;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('Test_FittedBox'),
        ),
        body: Center(
            child: Column(
          children: [
            wContainer(BoxFit.none),
            Text('Wendux'),
            wContainer(BoxFit.contain),
            Text('Flutter中国1'),
            wContainer(BoxFit.fill),
            // Text('Flutter中国2'),
            // wContainer(BoxFit.contain),
            // Text('Flutter中国3'),
            // wContainer(BoxFit.cover),
            // Text('Flutter中国4'),
            // wContainer(BoxFit.fitWidth),
            // Text('Flutter中国5'),
            // wContainer(BoxFit.fitHeight),
            // Text('Flutter中国6'),
            Center(
                child: Column(
                    children: [
              wRow(' 90000000000000000 '),
              FittedBox(child: wRow(' 90000000000000000 ')),
                //，当 Row 没有被 FittedBox 包裹时，此时父组件传给 Row 的约束的 maxWidth 为屏幕宽度，
              wRow(' 800 '),
                // 当被FittedBox 包裹时，FittedBox 传给 Row 的约束的 maxWidth 为无限大（double.infinity），因此Row 的最终宽度就是子组件的宽度之和。
              FittedBox(child: wRow(' 800 ')),
            ]
                        .map((e) => Padding(
                              padding: EdgeInsets.symmetric(vertical: 20),
                              child: e,
                            ))
                        .toList())),
          ],
        )));
  }
}

//--------------------子组件过长会警告
// const Column(children: [
// Padding(
// padding: const EdgeInsets.symmetric(vertical: 30.0),
// child: Row(children: [Text("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")]), //文本长度超出 Row 的最大宽度会溢出
// )
// ])
